Model fit

Column

Assumption checks

Column

Indices of model fit

Metric Value
AIC 107.34
AICc 108.72
BIC 113.44
Nagelkerke’s R2 0.37
RMSE 1.20
Sigma 1.00
Score_log -1.46
Score_spherical 0.16

For interpretation of performance metrics, please refer to this documentation.

Parameter estimates

Column

Plot

Column

Tabular summary

Parameter Log-Mean SE 95% CI z p
(Intercept) -0.10 0.85 (-1.94, 1.43) -0.12 0.907
Sitio -1.56e-03 0.09 (-0.17, 0.17) -0.02 0.986
Periodo 0.07 0.18 (-0.26, 0.44) 0.42 0.674
Sitio × Periodo 0.01 0.02 (-0.03, 0.05) 0.57 0.566

To find out more about table summary options, please refer to this documentation.

Predicted Values

Column

Plot

Column

Tabular summary

Model-based Expectation
Sitio Periodo Predicted SE 95% CI
-12.09 2.45 0.82 0.81 (0.12, 5.66)
-7.06 2.45 0.92 0.70 (0.21, 4.11)
-2.03 2.45 1.03 0.57 (0.35, 3.02)
3.00 2.45 1.17 0.40 (0.59, 2.30)
8.03 2.45 1.31 0.29 (0.85, 2.03)
13.06 2.45 1.48 0.43 (0.84, 2.62)
18.09 2.45 1.67 0.79 (0.66, 4.24)
23.12 2.45 1.88 1.30 (0.49, 7.27)
28.15 2.45 2.12 1.93 (0.35, 12.66)
33.18 2.45 2.38 2.71 (0.26, 22.21)
-12.09 4.21 0.75 0.44 (0.24, 2.35)
-7.06 4.21 0.92 0.42 (0.38, 2.25)
-2.03 4.21 1.14 0.37 (0.60, 2.16)
3.00 4.21 1.40 0.29 (0.93, 2.11)
8.03 4.21 1.73 0.23 (1.33, 2.25)
13.06 4.21 2.13 0.36 (1.53, 2.98)
18.09 4.21 2.63 0.73 (1.53, 4.54)
23.12 4.21 3.25 1.31 (1.48, 7.15)
28.15 4.21 4.01 2.14 (1.41, 11.39)
33.18 4.21 4.95 3.29 (1.34, 18.23)
-12.09 5.96 0.68 0.53 (0.15, 3.16)
-7.06 5.96 0.92 0.56 (0.28, 3.01)
-2.03 5.96 1.25 0.54 (0.54, 2.90)
3.00 5.96 1.69 0.46 (0.99, 2.86)
8.03 5.96 2.28 0.39 (1.63, 3.18)
13.06 5.96 3.08 0.70 (1.97, 4.81)
18.09 5.96 4.16 1.57 (1.99, 8.71)
23.12 5.96 5.62 3.08 (1.92, 16.43)
28.15 5.96 7.60 5.50 (1.84, 31.41)
33.18 5.96 10.27 9.28 (1.75, 60.33)

Variable predicted: n.genera

Predictors modulated: Sitio, Periodo

Text reports

Column

Textual summary

We fitted a poisson model (estimated using ML) to predict n.genera with Sitio and Periodo (formula: n.genera ~ Sitio * Periodo). The model’s explanatory power is substantial (Nagelkerke’s R2 = 0.37). The model’s intercept, corresponding to Sitio = 0 and Periodo = 0, is at -0.10 (95% CI (-1.94, 1.43), p = 0.907). Within this model:

  • The effect of Sitio is statistically non-significant and negative (beta = -1.56e-03, 95% CI (-0.17, 0.17), p = 0.986; Std. beta = 0.21, 95% CI (-0.05, 0.48))
  • The effect of Periodo is statistically non-significant and positive (beta = 0.07, 95% CI (-0.26, 0.44), p = 0.674; Std. beta = 0.28, 95% CI (3.74e-03, 0.57))
  • The effect of Sitio × Periodo is statistically non-significant and positive (beta = 0.01, 95% CI (-0.03, 0.05), p = 0.566; Std. beta = 0.09, 95% CI (-0.22, 0.40))

Standardized parameters were obtained by fitting the model on a standardized version of the dataset. 95% Confidence Intervals (CIs) and p-values were computed using a Wald z-distribution approximation. The model’s explanatory power is substantial (Nagelkerke’s R2 = 0.37)

Column

Model information

---
title: "Regression model summary from `{easystats}`"
output:
  flexdashboard::flex_dashboard:
    theme:
      version: 4
      # bg: "#101010"
      # fg: "#FDF7F7"
      primary: "#0054AD"
      base_font:
        google: Prompt
      code_font:
        google: JetBrains Mono
params:
  model: model
  check_model_args: check_model_args
  parameters_args: parameters_args
  performance_args: performance_args
---

```{r setup, include=FALSE}
library(flexdashboard)
library(easystats)

# Since not all regression model are supported across all packages, make the
# dashboard chunks more fault-tolerant. E.g. a model might be supported in
# `{parameters}`, but not in `{report}`.
#
# For this reason, `error = TRUE`
knitr::opts_chunk$set(
  error = TRUE,
  out.width = "100%"
)

# helper function for printing `{report}` outputs
bracket_to_parantheses <- function(text) {
  gsub("]", ")", gsub("[", "(", text, fixed = TRUE), fixed = TRUE)
}
```

```{r easydashboard-1}
# Get user-specified model data
model <- params$model

# Is it supported by `{easystats}`? Skip evaluation of the following chunks if not.
is_supported <- insight::is_model_supported(model)

if (!is_supported) {
  unsupported_message <- sprintf(
    "Unfortunately, objects of class `%s` are not yet supported in {easystats}.\n
    For a list of supported models, see `insight::supported_models()`.",
    class(model)[1]
  )
}
```


Model fit
=====================================

Column {data-width=700}
-----------------------------------------------------------------------

### Assumption checks

```{r check-model, eval=is_supported, fig.height=10, fig.width=10}
check_model_args <- c(list(model), params$check_model_args)
# add verbose, if not done yet
if (is.null(check_model_args$verbose)) check_model_args$verbose <- FALSE
tryCatch(
  {
    do.call(performance::check_model, check_model_args)
  },
  error = function(e) {
    cat(insight::format_message(
      "\nSomething did not work as expected. Please file an issue at {.url https://github.com/easystats/easystats/issues/} and post the following output:",
      paste0("\n`", e$message, "`")
    ))
  }
)
```

```{r easydashboard-2, eval=!is_supported}
cat(unsupported_message)
```

Column {data-width=300}
-----------------------------------------------------------------------

### Indices of model fit

```{r easydashboard-3, eval=is_supported}
# {performance}
performance_args <- c(list(model), params$performance_args)
# add verbose, if not done yet
if (is.null(performance_args$verbose)) performance_args$verbose <- FALSE
table_performance <- do.call(performance::performance, performance_args)
print_md(table_performance, layout = "vertical", caption = NULL)
```


```{r easydashboard-4, eval=!is_supported}
cat(unsupported_message)
```

For interpretation of performance metrics, please refer to <a href="https://easystats.github.io/performance/reference/model_performance.html" target="_blank">this documentation</a>.

Parameter estimates
=====================================

Column {data-width=550}
-----------------------------------------------------------------------

### Plot

```{r dot-whisker, eval=is_supported}
# `{parameters}`
parameters_args <- c(list(model), params$parameters_args)
# add verbose, if not done yet
if (is.null(parameters_args$verbose)) parameters_args$verbose <- FALSE
table_parameters <- do.call(parameters::parameters, parameters_args)

plot(table_parameters)
```


```{r easydashboard-5, eval=!is_supported}
cat(unsupported_message)
```

Column {data-width=450}
-----------------------------------------------------------------------

### Tabular summary

```{r easydashboard-6, eval=is_supported}
print_md(table_parameters, caption = NULL)
```


```{r easydashboard-7, eval=!is_supported}
cat(unsupported_message)
```

To find out more about table summary options, please refer to <a href="https://easystats.github.io/parameters/reference/model_parameters.html" target="_blank">this documentation</a>.


Predicted Values
=====================================

Column {data-width=600}
-----------------------------------------------------------------------

### Plot

```{r expected-values, eval=is_supported, fig.height=10, fig.width=10}
# {modelbased}
int_terms <- find_interactions(model, component = "conditional", flatten = TRUE)
con_terms <- find_variables(model)$conditional

if (is.null(int_terms)) {
  model_terms <- con_terms
} else {
  model_terms <- clean_names(int_terms)
  int_terms <- unique(unlist(strsplit(clean_names(int_terms), ":", fixed = TRUE)))
  model_terms <- c(model_terms, setdiff(con_terms, int_terms))
}

# check some exceptions here: logistic regression models with factor response
# usually require the response to be included in the model, else `get_modelmatrix()`
# fails, which is required to compute SE/CI for `get_predicted()`
response <- find_response(model)
minfo <- model_info(model)
model_data <- get_data(model)
include_response <- minfo$is_binomial && minfo$is_logit && is.factor(model_data[[response]])

text_modelbased <- tryCatch(
  {
    lapply(unique(model_terms), function(i) {
      dgrid <- get_datagrid(
        model,
        by = i,
        range = "grid",
        preserve_range = FALSE,
        verbose = FALSE,
        include_response = include_response
      )
      estimate_expectation(model, data = dgrid, verbose = FALSE)
    })
  },
  error = function(e) {
    cat(insight::format_message(
      "\nSomething did not work as expected. Please file an issue at {.url https://github.com/easystats/easystats/issues/} and post the following output:",
      paste0("\n`", e$message, "`")
    ))
    NULL
  }
)

if (!is.null(text_modelbased)) {
  ggplot2::theme_set(theme_modern())
  # all_plots <- lapply(text_modelbased, function(i) {
  #   out <- do.call(visualisation_recipe, c(list(i), modelbased_args))
  #   plot(out) + ggplot2::ggtitle("")
  # })
  all_plots <- lapply(text_modelbased, function(i) {
    out <- visualisation_recipe(i, show_data = "none")
    plot(out) + ggplot2::ggtitle("")
  })

  see::plots(all_plots, n_columns = round(sqrt(length(text_modelbased))))
}
```


```{r easydashboard-8, eval=!is_supported}
cat(unsupported_message)
```

Column {data-width=400}
-----------------------------------------------------------------------

### Tabular summary

```{r easydashboard-9, eval=is_supported, results="asis"}
if (!is.null(text_modelbased)) {
  for (i in text_modelbased) {
    tmp <- print_md(i)
    tmp <- gsub("Variable predicted", "\nVariable predicted", tmp, fixed = TRUE)
    tmp <- gsub("Predictors modulated", "\nPredictors modulated", tmp, fixed = TRUE)
    tmp <- gsub("Predictors controlled", "\nPredictors controlled", tmp, fixed = TRUE)
    print(tmp)
  }
}
```


```{r easydashboard-10, eval=!is_supported}
cat(unsupported_message)
```


Text reports
=====================================

Column {data-width=500}
-----------------------------------------------------------------------

### Textual summary

```{r easydashboard-11, eval=is_supported, results='asis', collapse=TRUE}
# {report}
text_report <- tryCatch(
  {
    report(model, verbose = FALSE)
  },
  error = function(e) {
    cat(insight::format_message(
      "\nSomething did not work as expected. Please file an issue at {.url https://github.com/easystats/easystats/issues/} and post the following output:",
      paste0("\n`", e$message, "`")
    ))
    NULL
  }
)


text_report_performance <- tryCatch(
  {
    report_performance(model, verbose = FALSE)
  },
  error = function(e) {
    cat(insight::format_message(
      "\nSomething did not work as expected. Please file an issue at {.url https://github.com/easystats/easystats/issues/} and post the following output:",
      paste0("\n`", e$message, "`")
    ))
    NULL
  }
)

if (!is.null(text_report)) {
  cat(bracket_to_parantheses(text_report))
  cat("\n")
}

if (!is.null(text_report_performance)) {
  cat(bracket_to_parantheses(text_report_performance))
}
```


```{r easydashboard-12, eval=!is_supported}
cat(unsupported_message)
```

Column {data-width=500}
-----------------------------------------------------------------------

### Model information

```{r easydashboard-13, eval=is_supported}
model_info_data <- insight::model_info(model, verbose = FALSE)
model_info_data <- datawizard::data_to_long(as.data.frame(insight::compact_list(model_info_data)))

DT::datatable(model_info_data)
```

```{r easydashboard-14, eval=!is_supported}
cat(unsupported_message)
```